package org.jeecg.common.wx.request;

import lombok.Data;
import org.apache.commons.lang3.StringUtils;

import java.util.HashMap;
import java.util.Map;

/**
 * @author guoyh
 * @ClassName WxRefundRequestVo
 * @Description
 * @since 2020/8/31 00:12
 **/
@Data
public class WxRefundRequestVo {

    /**
     * 公众账号ID
     */
    private String appid;
    /**
     * 商户号
     */
    private String mch_id;
    /**
     * 随机字符串
     */
    private String nonce_str;
    /**
     * 签名
     */
    private String sign;
    /**
     * 微信订单号
     */
    private String transaction_id;
    /**
     * 商户订单号
     */
    private String out_trade_no;
    /**
     * 退款单号
     */
    private String out_refund_no;
    /**
     * 总金额
     */
    private String total_fee;
    /**
     * 退款金额
     */
    private String refund_fee;

    public Map<String, String> toMap() {
        Map<String, String> map = new HashMap<String, String>();
        map.put("appid", appid);
        map.put("mch_id", mch_id);
        map.put("nonce_str", nonce_str);
        if (StringUtils.isNotBlank(transaction_id)){
            map.put("transaction_id",transaction_id);
        }
        if (StringUtils.isNotBlank(out_trade_no)){
            map.put("out_trade_no", out_trade_no);
        }
        map.put("out_refund_no", out_refund_no);
        map.put("total_fee", total_fee);
        map.put("refund_fee", refund_fee);
        return map;
    }

    public String toXML() {
        StringBuilder sb = new StringBuilder();
        sb.append("<xml>");
        sb.append("<appid><![CDATA[").append(appid).append("]]></appid>");
        sb.append("<mch_id><![CDATA[").append(mch_id).append("]]></mch_id>");
        sb.append("<nonce_str><![CDATA[").append(nonce_str).append("]]></nonce_str>");
        if (StringUtils.isNotBlank(transaction_id)){
            sb.append("<transaction_id><![CDATA[").append(transaction_id).append("]]></transaction_id>");
        }
        if (StringUtils.isNotBlank(out_trade_no)) {
            sb.append("<out_trade_no><![CDATA[").append(out_trade_no).append("]]></out_trade_no>");
        }
        sb.append("<out_refund_no><![CDATA[").append(out_refund_no).append("]]></out_refund_no>");
        sb.append("<total_fee><![CDATA[").append(total_fee).append("]]></total_fee>");
        sb.append("<refund_fee><![CDATA[").append(refund_fee).append("]]></refund_fee>");
        sb.append("<sign><![CDATA[").append(sign).append("]]></sign>");
        sb.append("</xml>");
        return sb.toString();
    }
}
